package io;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲输出流写出数据的缓冲问题
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        //
        FileOutputStream fos=new FileOutputStream("bos.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        String str="hello world ";
        byte[] date=str.getBytes(StandardCharsets.UTF_8);
        bos.write(date);
        /*
         1. 缓冲输出流写出数据时，并不是直接将数据写出去，而是先将数据放到缓冲区中，
         2. 当缓冲区满了，或者调用了flush()方法，才会将缓冲区中的数据写出去
         3. flush()方法，是所有缓冲输出流都有的方法，作用是清空缓冲区
         （因为，该方法是在Flushable接口中定义的，而输出流的超类OutputStream实现了该接口）
        * */
        bos.flush();
        System.out.println("数据写出完毕");
    }
}
